package com.vogue.supplymall.common.domain.tool;

import java.util.Random;

/**
 * Created by 崔岳 on 2017-12-1.
 * 数字处理工具类
 */
public class MathUtils {

	/**
	 * 获取几位随机数字，纯数字组成 <br>
	 * 
	 * @param digits	需要生成的位数
	 * @param zeroBegin	是否允许0开头
	 * @return 0 ：位数不合法，应该在1至18之间
	 */
	public static long randomNumber(int digits, boolean zeroBegin) {
		long result = 0L;
		if(digits > 0 && digits < 19) {
			int max = 9;
			int min = 0;
			Random random = new Random();
			for(int i=0; i < digits; i++){				
				result += (random.nextInt(max) % (max - min + 1) + min) * java.lang.Math.pow(10,i);
			}		
			if(!zeroBegin) {
				if(result < java.lang.Math.pow(10,digits-1)) {
					int firstBit = 0;
					while(firstBit == 0) {
						firstBit = (random.nextInt(max) % (max - min + 1) + min);
					}
					result += firstBit * java.lang.Math.pow(10,digits-1);					
				}
			}
		}
		return result;
	}
	
	/**
	 * 获取几位随机数字，纯数字组成 ,并且首位不是0 <br>
	 * @param digits	最大位数
	 * @return 0 ：位数不合法，应该在1至18之间
	 */
	public static long randomNumber(int digits) {
		return randomNumber(digits, false);
	}
	
	/**
	 * 在指定的范围内获取一个有效数 <br>
	 * 
	 * @param min	最小值
	 * @param max	最大值
	 * @return	范围内的一个随机数
	 */
	public static int randomNumberInt(int min, int max) {		
		double num = Math.random() * (max - min);
		int result = (int)Math.floor(num) + min;
		return result;
	}
}
